package com.lxl.workbench.dao;

import com.lxl.settings.entity.User;
import com.lxl.workbench.entity.CategoryStaff;
import com.lxl.workbench.entity.CommonStaff;
import javax.servlet.jsp.jstl.sql.Result;
import java.sql.SQLException;
import java.util.List;

/**
 * @author 北上寻海
 */
public interface StaffDao {
    /**
     * 根据条件筛选普通员工
     * @param staffName 员工名
     * @param staffSex 员工性别
     * @return 查询结果集
     * @throws SQLException 数据库异常
     */
    Result selectStaffFromCommon(String staffName , String staffSex) throws SQLException;

    /**
     * 根据条件筛选书目管理员
     * @param staffName 员工名
     * @param staffSex 员工性别
     * @return 查询结果集
     * @throws SQLException 数据库异常
     */
    Result selectStaffFromCategory(String staffName , String staffSex) throws SQLException;



    /**
     * 查询书目的时候要查对应的书目管理员，拿查出来的书目再查一遍
     * @param categoryId 书目id
     * @return 书目查询结果集
     * @throws SQLException 数据库异常
     */
    Result selectCategoryStaffByManageId(String categoryId) throws SQLException;

    /**
     * 通过id查普通员工
     * @param id 待查id
     * @return 查询结果集
     * @throws SQLException 数据库异常
     */
    Result selectCommonStaffById(String id) throws SQLException;

    /**
     * 升职
     * @param categoryStaff 书目管理员信息
     * @param id 用于删除普通员工的id，其实和上面那个书目管理员信息里的id是一样的
     * @throws SQLException 数据库异常
     */
    void promoteStaff(CategoryStaff categoryStaff,String id) throws SQLException;

    /**
     * 辞退员工要把tbl_user里面的也删掉，所以要把user_id查出来
     * @param delIds 所有选中的id
     * @return 查到的commonStaff，里面包含user_id
     * @throws SQLException 数据库异常
     */
   Result selectCommonStaffForUserId(String [] delIds) throws SQLException;

    /**
     * 辞退员工要把tbl_user里面的也删掉，所以要把user_id查出来
     * @param delIds 所有选中的id
     * @return 查到的categoryStaff，里面包含user_id
     * @throws SQLException 数据库异常
     */
   Result selectCategoryStaffForUserId(String [] delIds) throws SQLException;

    /**
     * 辞退员工，要删员工表和user表
     * @param delIds 员工表id
     * @param userIds 用户表id
     * @throws SQLException 数据库异常
     */
    void resignStaffByIds(String [] delIds,String [] userIds) throws SQLException;


    /**
     * 降职，根据id删category_id,根据list加common_staff
     * @param commonStaffList 普通员工
     * @param categoryIds 书目管理员id
     * @throws SQLException 数据库异常
     */
    void demoteStaff(List<CommonStaff> commonStaffList,String [] categoryIds) throws SQLException;

    /**
     * 查询馆长信息，根据id查
     * @param id id
     * @return 结果集
     * @throws SQLException sql
     */
    Result selectCuratorById(String id) throws SQLException;

    /**
     * 批量查询，根据ids数组
     * @param ids 数组
     * @return curator结果集
     * @throws SQLException sql
     */
    Result selectCuratorByIds(String [] ids) throws SQLException;

    /**
     * 添加普通员工（user+commonStaff）
     * @param user 拥护
     * @param commonStaff 普通员工
     * @throws SQLException sql
     */
    void addCommonStaffByCondition(User user,CommonStaff commonStaff) throws SQLException;

    /**
     *
     * 添加普通员工（user+commonStaff）
     * @param user 拥护
     * @param categoryStaff 书目管理员
     * @throws SQLException sql
     */
    void addCategoryStaffByCondition(User user,CategoryStaff categoryStaff) throws SQLException;
}
